package com.mtons.mblog.modules.service;

import com.mtons.mblog.modules.pojo.UserFollowRel;
import com.mtons.mblog.modules.vo.AccountProfile;

import java.util.List;

/**
 * @ClassName: UserFollowService
 * @Auther: Jerry
 * @Date: 2020/5/21 14:35
 * @Desctiption: TODO
 * @Version: 1.0
 */
public interface UserFollowService {

    /**
     * 是否被关注
     *
     * @param followId 被关注者的id
     * @param profile     关注者
     * @return boolean
     */
    boolean isFollowed(Long followId, AccountProfile profile);

    /**
     * 关注
     *
     * @param followId 被关注者的id
     * @param profile     关注者
     */
    void follow(Long followId, AccountProfile profile);

    /**
     * 取消关注
     *
     * @param followId 被关注者的id
     * @param profile     关注者
     */
    void unFollow(Long followId, AccountProfile profile);

    /**
     * 我的关注列表
     *
     * @param userId 关注者id
     * @return {@link List<UserFollowRel>}
     */
    List<UserFollowRel> myFollows(long userId);

    /**
     * 我的粉丝列表
     *
     * @param followId 被关注者id
     * @return {@link List<UserFollowRel>}
     */
    List<UserFollowRel> myFans(long followId);

    /**
     * 我的关注数
     *
     * @param targetUserId 目标用户Id
     * @return {@link Long}
     */
    Long  myFollowCount(Long targetUserId);

    /**
     * 我的粉丝数
     *
     * @param targetUserId 目标用户Id
     * @return {@link Long}
     */
    Long myFansCount(Long targetUserId);

}
